package controllers;

import java.awt.event.ActionEvent;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.ManagedBean;
import javax.enterprise.context.SessionScoped;

import models.Cliente;
import daos.ClienteDao;
import daos.ClienteDaoImpl;

@ManagedBean
@SessionScoped 
public class ClienteBean implements Serializable {

    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Cliente cliente = new Cliente();
    private List<Cliente> clientes = new ArrayList<Cliente>();
    private ClienteDao dao = new ClienteDaoImpl();

    /** Creates a new instance of ClienteBean */
    public ClienteBean() {
        clientes = (List<Cliente>) dao.consultar(); // busca todos registros do banco e popula a lista de clientes
    }

    public void salvar(ActionEvent event) {
        dao.save(cliente); // salvando no banco de dados
        cliente = new Cliente(); // criando um novo objeto para caso for inserir novamente
        clientes = (List<Cliente>) dao.consultar();// busca os dados no banco após salvar para apresentar na tabela
    }

    public void editar() {
        cliente = dao.getById(cliente.getIdCliente()); // busca no banco de dados qual registro que vai ser alterado.
    }

    public void excluir() {
        dao.delete(cliente); // deleta do banco o cliente que está no objeto cliente, que foi setado na view.
        clientes = (List<Cliente>) dao.consultar();// busca os dados no banco após excluir para apresentar na tabela
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    public List<Cliente> getClientes() {
        return clientes;
    }

    public void setClientes(List<Cliente> clientes) {
        this.clientes = clientes;
    }
}
